/**
 * JS对象数组去重
 * @param objs 对象数组
 * @param fields 字段名数组
 */
export default function remove_duplicate(objs: [{ [key: string]: any }], fields: string[]) {
	const s = new Map<string, number>();
	const m = new Map<number, boolean>();
	objs.forEach((obj, i) => {
		const k = fields.reduce((pre, cur) => {
			return pre + JSON.stringify(obj[cur]);
		}, '');
		const v = s.get(k);
		if (v !== undefined) {
			m.set(v, false);
			m.set(i, false);
		} else {
			m.set(i, true);
			s.set(k, i);
		}
	});
	return objs.filter((_it, i) => {
		return m.get(i);
	});
}
